import os


class AudioRenamer:
    def __init__(self, audio_dir:str="", text: str=""):
        """
        audio_dir: 音频文件目录
        text: 多行文本，每行是新的文件名
        """
        self.audio_dir = audio_dir
        self.text = text
    def set_audio_dir(self,audio_dir:str):
        self.audio_dir=audio_dir

    def set_text(self,text:str):
        self.text=text


    def rename_audio_files(self):
        # 获取目录下所有音频文件，按名称排序（保证顺序可控）
        audio_files = sorted([
            f for f in os.listdir(self.audio_dir)
            if os.path.isfile(os.path.join(self.audio_dir, f))
               and f.lower().endswith(('.mp3', '.wav', '.m4a', '.flac'))
        ])
        result=[]
        # 获取多行文本，每行作为新文件名
        new_names = [line.strip() for line in self.text.splitlines() if line.strip()]

        # 检查数量是否匹配
        if len(audio_files) != len(new_names):
            print(f"警告：音频文件数({len(audio_files)})和文本行数({len(new_names)})不一致！")

        # 依次重命名
        for old_file, new_name in zip(audio_files, new_names):
            ext = os.path.splitext(old_file)[1]  # 保留原来的文件扩展名
            old_path = os.path.join(self.audio_dir, old_file)
            new_path = os.path.join(self.audio_dir, new_name + ext)
            os.rename(old_path, new_path)
            print(f"重命名: {old_file} -> {new_name + ext}")
            result.append(new_path)
        return result


# # 示例用法
# text = """第一首歌
# 第二首歌
# 第三首歌"""
#
# renamer = AudioRenamer(r"C:\Users\你\Music", text)
# renamer.rename_audio_files()
